package myjava.a_string;

/**
 * @Auther: cty
 * @Date: 2019/11/5 下午10:30
 * @Description: StringBuilder可变字符串序列的常用方法
 * @version: 1.0
 */
public class C_TestBuilder {
    public static void main(String[] args) {
        //StringBuilder线程不安全，效率高（一般使用它）；StringBuffer线程安全，效率低
        StringBuilder sb = new StringBuilder("abcdefg");
        System.out.println(Integer.toHexString(sb.hashCode()));  //输出字符串地址
        System.out.println(sb);

        System.out.println("setCharAt修改字符串指定位置字符为另一个字符");
        sb.setCharAt(2,'M');
        System.out.println(Integer.toHexString(sb.hashCode()));  //输出字符串地址
        System.out.println(sb);

        System.out.println("append在字符串尾部添加一个字符");
        StringBuilder sb1 = new StringBuilder();
        for(int i=0;i<26;i++){
            char temp = (char)('a'+i);
            sb1.append(temp);
        }
        System.out.println(sb1);

        System.out.println("reverse将字符串顺序反转");
        sb1.reverse();
        System.out.println(sb1);

        System.out.println("insert在字符串指定位置插入一个字符/字符串");
        sb1.insert(0,'H');
        System.out.println(sb1);
        //链式调用。核心就是：该方法调用了return this，把自己返回
        sb1.insert(0,"我").insert(6,"爱").insert(10,"你");
        System.out.println(sb1);

        System.out.println("delete删除字符串指定区间的字符");
        sb1.delete(0,1).delete(5,6).delete(8,9).insert(0,"删除成功");
        System.out.println(sb1);
    }
}
